package com.freemyleft.left.zapp.selectimage.imageload;

import android.content.Context;
import android.util.Log;
import android.widget.ImageView;

import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;

import com.squareup.picasso.Picasso;


/**
 * Created by Administrator on 2016/9/26 0026.
 */
public class LoadImagePicasso implements ImageIf {
    @Override
    public void loadImageDefault(Context context, ImageView imageView, String url) {
    }

    @Override
    public void loadImageDefault(Context context, ImageView imageView, String url, int error) {
    }

    @Override
    public void loadImageDefault(Context context, ImageView imageView, String url, int error, int load) {
        loadImgDefault(context, imageView, url, error, load);
    }

    /** 加载正常图片 */
    public static void loadImgDefault(Context context,ImageView imageView,String url,int errorImg,int loadImg){
        loadImage(context, imageView, url, errorImg, loadImg, null);
    }

    private static void loadImage(Context context,ImageView imageView,String url,int errorImg,int loadImg,BitmapTransformation type) {
        if (url == null || url.isEmpty()) {
            imageView.setImageResource(errorImg);
            return;
        }
        if (url.length() >= 8) {
            if (url.substring(0, 7).equals("http://") || url.substring(0, 8).equals("https://")) {
            } else {
                url = "";
            }
        }
        if (type == null && context != null) {
//            Glide.getPhotoCacheDir()
            try {
                Picasso.with(context)
                        .load(url)
                        .error(errorImg)    //设置加载失败后的图片
//                        .placeholder(errorImg) //设置加载中的图片
//                        .config(Bitmap.Config.ARGB_4444)
//                        .resize(200,200)
                        .placeholder(loadImg) //加载中
//                        .skipMemoryCache()
//                        .transform(new Do40kTransformation())
                        .into(imageView);
            } catch (Exception e) {
                e.printStackTrace();
                Log.e("Picasso::", "===IllegalArgumentException: You cannot start a load for a destroyed activity");
            }
            return;
        }
    }

//    static class CropSquareTransformation implements Transformation {
//        @Override public Bitmap transform(Bitmap source) {
//            int size = Math.min(source.getWidth(), source.getHeight());
//            AhLog.e("aa  size  w:" + source.getWidth() + "  ,h: "+ source.getHeight());
//            int x = (source.getWidth() - size) / 2;
//            int y = (source.getHeight() - size) / 2;
//            Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
//            if (result != source) {
//                source.recycle();
//            }
//            return result;
//        }
//        @Override public String key() { return "square()"; }
//    }
//
//    static class Do40kTransformation implements Transformation {
//
//        public static long sizeByte = 40000;
//
//        @Override public Bitmap transform(Bitmap source) {
//
//            Rect rect = getLowerRect(new Rect(source.getWidth(), source.getHeight()), sizeByte);
//
//
//            AhLog.e("aa  size  w:" + source.getWidth() + "  ,h: "+ source.getHeight());
//            AhLog.e("   --->  aa  bbsize  w:" + rect.getWidth() + "  ,h: "+ rect.getHeight());
//
//            Bitmap result = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight());
//
//            if (result != source) {
//                source.recycle();
//            }
//            return result;
//        }
//        @Override public String key() { return "square()"; }
//    }
//
//    static Rect getLowerRect(Rect rect, long sizeByte){
//        if(rect.getWidth() * rect.getHeight() > sizeByte){
//            return getLowerRect(rect.getSmallRect(), sizeByte);
//        }else{
//            return rect;
//        }
//    }
//
//    static class Rect{
//        int mWidth = 200;
//        int mHeight = 200;
//
//        Rect(int width, int height){
//            mWidth = width;
//            mHeight = height;
//        }
//
//        int getWidth(){
//            return mWidth;
//        }
//
//        int getHeight(){
//            return mHeight;
//        }
//
//        Rect getSmallRect(){
//            return new Rect(mWidth/2, mHeight/2);
//        }
//
//
//        public Rect getRect(){
//            return this;
//        }
//    }

}
